Nun eine ganz wichtige Komponente bei diesen Abbildungsvorgängen im Zusammenhang mit logischen
Adressreihen, so sei es jetzt nun halt seitennummerierte Adressen, die wir abbilden müssen auf reale
Adressen oder segmentierte Adressen, die dann halt abzubilden sind, ist der Übersetzungspuffer,
der TLB, Translation Look-Aside Buffer. Wir müssen einfach hinter den Hinterkopfbalken,
dass ja jede dieser Art von die Referenzierung, die wir gerade besprochen haben, in indirekten
Zugriff über eine oder mehrere Tabellen im Hauptspeicher geht. Und wenn man jetzt,
da man ja ein Objekt überhaupt im Hauptspeicher adressieren muss, dazu denn noch mal über mehrere
Tabellen im Hauptspeicher laufen muss, bei jeder einzelnen Adresse würde man enorme Zugriffslatenzen
bekommen, die unsere Programmausführung enorm langsam werden lässt. Das ist also nicht praktisch,
das heißt man muss halt eine Vorkehrung treffen, um diese Latenzen, die man denn bekommt, wenn man
die Tabellen praktisch selektiert, wenn man die Diskriptoren aus den Tabellen halt auslesen
möchte, um diese Latenzen halt verbergen zu können. Und dazu gehen diese Pufferungstechnik. Das ist
ein Cache, ein Zwischenspeicher für das Übersetzungsergebnis. Also das ist nicht so ein Daten-
oder Instruction-Cache, wie wir den normalerweise bei den Prozessoren halt haben, sondern hier wird
sozusagen ein Übersetzungsergebnis von einer logischen zu einer realen Adresse halt zwischengespeichert,
sodass man denn, wenn diese Übersetzung noch mal durchgeführt werden muss, nicht über die Tabellen
gehen muss, sondern man direkt in diesem Cache, in diesem TLB sozusagen das Ergebnis findet. Das ist
ein Adressenatürtivspeicher, der relativ klein ist, wo man denn sowas wie Segment- und Seitenindex der
Adresse, logisch virtuellen Adresse eben als einen Suchschlüssel typischerweise vorzuliegen hat.
Nun, der Cache ist klein, der TLB ist klein, viel kleiner als die Tabellen ausmachen, dem zur Folge
wird es Umsetzungsfehler gehen, wie man das typischerweise bei solchen Caches halt hat.
Das ist ja sogar ein Lookup-Miss, der halt auftreten kann, wo man hofft, dass er nicht so häufig
auftritt, aber er wird immer auftreten und die Folge dieses Umsetzungsfehlers ist denn eine
Tabellenwanderung, nämlich über die Seitensegment-Tabellen, um denn diese Abbildung
durchführen zu können und dann das Abbildungsergebnis, wenn man die Abbildungen
durchführen kann, im Cache zu speichern. Nun, da kann man diese Wanderung in der
Hardware ablaufen lassen, das sind die sogenannten Hardware-geführten TLBs, denn es ist so, dass die
CPU dann praktisch tatsächlich diese Tabellen, die Seitensegment-Tabellen, abläuft und man denn
nur den Trepp von der CPU bekommt, wenn die Tabellenwanderung erfolglos war. Das heißt also,
man konnte die Abbildung nicht durchführen. Das ist praktisch eine in Hardware implementierte
Management-Unit, die man so beim Intel-Prozessor kennt oder Power-PCs halt etwa kennt. Die andere
Variante ist, dass man diese Tabellenwanderung softwaregeführt durchführt, dann ist es
Betriebssystem, was de facto diese Tabellen abläuft. Das heißt also, man würde denn diesen
Lookup-Miss, diesen Umsetzungsfehler als einen unmittelbaren Trepp der CPU verstehen, also wenn
man also nichts im TLB findet für die entsprechende logische virtuelle Adresse, die jetzt hier
referenziert werden würde, gibt es sofort den Trepp und der Trepp wird im Betriebssystem behandelt
und das Betriebssystem würde demzufolge denn die Seiten- oder Segment-Tabellen, je nach Adressraum
Modell, was man da implementiert, denn ablaufen ist ein sogenannter in Software implementierte
Management-Unit, die man dann halt dort eigentlich einführt. Prozessoren wie MIPS und Alpha-Prozessoren,
die verwenden so eine Variante. Da hat man natürlich halt den Vorteil des Software geführt,
dass man sich eigentlich beliebige Memory-Management-Units und Konzepte der
Abbildung denn letztendlich zusammenbauen kann im Betriebssystem und dann so eine
Abbildungsvorgänge sehr speziell auf das Adressraum Modell, das man implementieren möchte,
zuschneidern kann im Endeffekt. Nun, die haben alle ihre Vor- und Nachteile. Wir würden eben eine
höhere Auffüllzeit des TLBs haben, wenn wir praktisch diese Tabellenwanderung Software geführt
durchführen. Dafür haben wir dafür eine höhere Flexibilität. Hier wird diese Auffüllzeit
erheblich kürzer liegen, weil sie ja nicht in Software durchgeführt wird, sondern die CPU
selbst läuft diese Tabellen eben ab. Aber gleichwohl muss sie natürlich teure Speicherzugriffe
denn ausüben, um an die Diskretoren in diesen Tabellen reinzukommen. In beiden Fällen möchte
man diese Umsetzungsfehler eigentlich nicht haben. Man möchte eigentlich immer die ideale Sicht haben,
Presenters
Zugänglich über
Offener Zugang
Dauer
00:12:24 Min
Aufnahmedatum
2020-12-21
Hochgeladen am
2020-12-22 00:49:30
Sprache
de-DE